package com.atguigu.java;

import org.junit.Test;

import java.util.Optional;

/**
 *
 *
 *
 *
 *
 */
public class OptionalTest {

    @Test
    public void test1(){
        //empty():创建的Optional对象内部的value = null
        Optional<Object> op1 = Optional.empty();
        if(!op1.isPresent()){//Optional封装是否为包含数据
            System.out.println("数据为空");
        }
        System.out.println(op1);
        System.out.println(op1.isPresent());
        //如果Option封装的数据value为空，则get()报错。否则，value不为空时，返回value
//        System.out.println(op1.get());

    }

    @Test
    public void test2(){
        String str = "Hello";
        str = null;
        //of(T t)：封装数据t生成的对象，要求t非空，否则会报错
        Optional<String> op1 = Optional.of(str);
        //get()方法通常与of()方法搭配使用，用于获取内部封装的数据value
        String s = op1.get();
        System.out.println(s);
    }

    @Test
    public void test3(){
        String str = "beijing";
        str = null;
        //ofNullable(T t):封装收据T赋给Optional内部的value，不要求t非空
        Optional<String> op1= Optional.ofNullable(str);
        //orElse(T t1):如果Optional内部的value非空，则返回此value值。
        //value为空，则返回t1
        System.out.println(op1.orElse("shanghai"));
    }
}
